package com.app.userComp;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.Cache;
import org.springframework.cache.Cache.ValueWrapper;
import org.springframework.cache.CacheManager;
import org.springframework.stereotype.Component;

import com.app.util.StringUtil;

/**
 * 类描述： 自定义cache工具类，提供存、取、删缓存功能
 * 创建者： shen_hy
 * 项目名称： webapps
 * 创建时间： 2018年4月10日 下午4:22:11
 * 版本号： v1.0
 */
@Component
public class WebAppCacheHelper {
	
	@Autowired
	private CacheManager cacheManager;
	
	/**
	 * 方法描述 :根据缓存名称，key值获取value对象
	 * 创建者：shen_hy 
	 * 项目名称： webapps
	 * 类名： WebAppCacheHelper.java
	 * 版本： v1.0
	 * 创建时间： 2018年4月11日 下午3:26:05
	 * @param cacheName
	 * @param key
	 * @return Object
	 */
	public Object getObject(String cacheName,Object key){
		Cache cache = cacheManager.getCache(cacheName);
		if(cache != null){
			ValueWrapper wrapper = cache.get(key);
			if(wrapper != null ){
				return wrapper.get();
			}
		}
		return null;
	}
	
	/**
	 * 方法描述 : 
	 * 创建者：shen_hy 
	 * 项目名称： webapps
	 * 类名： WebAppCacheHelper.java
	 * 版本： v1.0
	 * 创建时间： 2018年4月11日 下午3:26:07
	 * @param cacheName
	 * @param key
	 * @param object
	 * @return boolean
	 */
	public boolean putObject(String cacheName,Object key,Object object){
		
		Cache cache = cacheManager.getCache(cacheName);
		// cache 和 对象都不能为空
		if(cache != null && object != null ){
			cache.put(key, object);
			
			return true;
		}
		return false;
	}
	
	/**
	 * 方法描述 :从指定的缓存中移除指定数据 
	 * 创建者：shen_hy 
	 * 项目名称： webapps
	 * 类名： WebAppCacheHelper.java
	 * 版本： v1.0
	 * 创建时间： 2018年4月11日 下午3:25:56
	 * @param cacheName 缓存名称
	 * @param key 键值
	 * @return boolean
	 */
	public boolean removeObject(String cacheName,String key){
		
		Cache cache = cacheManager.getCache(cacheName);
		// cache 和 对象都不能为空
		if(cache != null && !StringUtil.isEmpty(key) ){
			
			cache.evict(key);
			
			return true;
		}
		return false ;
	}

}
